﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System;
using vudu.EnlaceDatos.SqlServer;
using vudu.Logica.Clases;
using vudu.Logica.Excepciones;

namespace vudu.PaginasWeb.G8Escuela
{
    public partial class AgregarEscuela : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            MensajeError.Visible = false;
            MensajeFinal.Visible = false;

            //Al integrar, por favor descomentar lo siguiente

            string miRol = (string)Session["rol"];
            if (miRol != "Universidad")
                Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");

            //Cuando se integre descomentar por favor
            Universidad _universidad = (Universidad)Session["usuario"];
            string _nombreUniversidad = _universidad.Nombre;
            Usuario.Text = _universidad.Nombre;


        }


        // IngresarUnaEscuela: se ejecuta al hacer click en Aceptar se reciben los valores del 
        //formulario, se agregan al objeto escuela y se hace la llamada del procedimiento 
        //AgregarEscuela, pasandole como parametros
        //la nueva escuela y el nombre de la universidad
        protected void IngresarUnaEscuela(object sender, EventArgs e)
        {
            try
            {

                Escuela _escuela = new Escuela();
                int _escuelaInsertada;
                string _nombreUniversidad;

                //Se utiliza la variable Session para obtener la universidad que esta ejecutando el caso
                //de uso

               //Cuando se integre descomentar por favor
                Universidad _universidad = (Universidad)Session["Usuario"];
                _nombreUniversidad = _universidad.Nombre;
                Usuario.Text = "Universidad: " + _nombreUniversidad;


                Page.Validate("a");

                if (Page.IsValid)
                {
                    if (ValidarFormulario())
                    {
                        _escuela.NombreEscuela = nombre.Text;
                        _escuela.DescripcionEscuela = Descripcion.Text;
                        _escuela.DirectorEscuela = Director.Text;
                        _escuela.DireccionEscuela = Direccion.Text;
                        _escuela.TelefonoEscuela = Telefono.Text;
                        _escuela.EstadoEscuela = 1;

                        _escuelaInsertada = _escuela.AgregarEscuela(_escuela, _nombreUniversidad);

                        MensajeFinal.Visible = true;
                        nombre.Text = "";
                        Descripcion.Text = "";
                        Director.Text = "";
                        Telefono.Text = "";
                        Direccion.Text = "";

                    }


                }

            }
            catch (ConexionExeption)
            {
                MensajeError.Visible = true;
            }
            catch (TransaccionFallidaExeption)
            {
                MensajeError.Visible = true;
            }
            catch (Exception)
            {
                MensajeError.Visible = true;
            }
        }

        #region Funciones utilizadas para validar informacion del formulario
        /// <summary>
        /// Funcion que valida que la informacion del formulario este correcta
        /// </summary>
        /// <returns></returns>
        public bool ValidarFormulario()
        {
            bool respuesta = true;
            respuesta = ValidarCampoNombreEscuela();
            respuesta = ValidarCampoDirectorEscuela();
            respuesta = ValidarCampoDescripcionEscuela();
            respuesta = ValidarCampoDireccionEscuela();
            respuesta = ValidarCampoTelefonoEscuela();
            return respuesta;
        }

        /// <summary>
        /// Funcion que valida si la informacion de Campo nombre es correcta.
        /// </summary>
        /// <param name="numero"></param>
        /// <returns>retorna true si es, false caso contrario.</returns>
        public bool ValidarCampoNombreEscuela()
        {
            if (nombre.Text.Length == 0)
            {
                MensajeNombreEscuela.Text = "Este campo es obligatorio";
                MensajeNombreEscuela.Visible = true;
                MensajeError.Visible = true;
                return false;
            }
            
            
            else
            {
                MensajeNombreEscuela.Visible = false;
                return true;
            }
        }

        /// <summary>
        /// Funcion que valida si la informacion de Campo director es correcta.
        /// </summary>
        /// <param name="numero"></param>
        /// <returns>retorna true si es, false caso contrario.</returns>
        public bool ValidarCampoDirectorEscuela()
        {
            if (Director.Text.Length == 0)
            {
                MensajeDirectorEscuela.Text = "Este campo es obligatorio";
                MensajeDirectorEscuela.Visible = true;
                MensajeError.Visible = true;
                return false;
            }
           
            else
            {
                MensajeDirectorEscuela.Visible = false;
                return true;
            }
        }

        /// <summary>
        /// Funcion que valida si la informacion de Campo descripcion es correcta.
        /// </summary>
        /// <param name="numero"></param>
        /// <returns>retorna true si es, false caso contrario.</returns>
        public bool ValidarCampoDescripcionEscuela()
        {
            if (Descripcion.Text.Length == 0)
            {
                MensajeDescripcionEscuela.Text = "Este campo es obligatorio";
                MensajeDescripcionEscuela.Visible = true;
                MensajeError.Visible = true;
                return false;
            }
            
            else
            {
                MensajeDescripcionEscuela.Visible = false;
                return true;
            }
        }

        /// <summary>
        /// Funcion que valida si la informacion de Campo direccion es correcta.
        /// </summary>
        /// <param name="numero"></param>
        /// <returns>retorna true si es, false caso contrario.</returns>
        public bool ValidarCampoDireccionEscuela()
        {
            if (Direccion.Text.Length == 0)
            {
                MensajeDireccionEscuela.Text = "Este campo es obligatorio";
                MensajeDireccionEscuela.Visible = true;
                MensajeError.Visible = true;
                return false;
            }
            
            else
            {
                MensajeDireccionEscuela.Visible = false;
                return true;
            }
        }

        /// <summary>
        /// Funcion que valida si la informacion de Campo telefono es correcta.
        /// </summary>
        /// <param name="numero"></param>
        /// <returns>retorna true si es, false caso contrario.</returns>
        public bool ValidarCampoTelefonoEscuela()
        {
            if (Telefono.Text.Length == 0)
            {
                MensajeTelefonoEscuela.Text = "Este campo es obligatorio";
                MensajeTelefonoEscuela.Visible = true;
                MensajeError.Visible = true;
                return false;
            }
            else if (!ValidarSiEsNumero(Telefono.Text))
            {
                MensajeTelefonoEscuela.Text = "Este campo no puede contener letras";
                MensajeTelefonoEscuela.Visible = true;
                MensajeError.Visible = true;
                return false;
            }
            else
            {
                MensajeTelefonoEscuela.Visible = false;
                return true;
            }
        }

        //funcion que valida si el campo es un numero
        public bool ValidarSiEsNumero(string numero)
        {
            try
            {
                Convert.ToInt32(numero);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        #endregion
    }
}